package com.sg.dto.biz.app.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * @desc ApproveReportInfoAndUpdateDataComReqDto
 * @使用场景
 */
@Data
public class ApproveReportInfoAndUpdateDataComReqDto
        extends BaseDto
        implements Serializable {

    /**
     * 是否 TRUE:是 FALSE:否
     */
    @NotNull(message = "财务是否计算不能为空")
    @ApiModelProperty("财务是否计算")
    private String tureOrFalse;

    /**
     * 数据对象批次标识
     */
    @NotNull(message = "数据对象批次标识不能为空")
    @ApiModelProperty("数据对象批次标识")
    private String dataObjectBatchCode;

    /**
     * 计算开始时间
     */
    @NotNull(message = "计算开始时间不能为空")
    @ApiModelProperty("计算开始时间")
    private Date calcStartTime;

    /**
     * 审核通过或失败操作类型 APPROVE:审核通过 AUDIT_FAILURE:审核失败
     */
    @NotNull(message = "审核通过或失败操作类型不能为空")
    @ApiModelProperty("审核通过或失败操作类型")
    private String examineOptType;

    /**
     * 任务ID
     */
    @NotNull(message = "任务ID不能为空")
    @ApiModelProperty("任务ID")
    private String taskId;

    /**
     * 周期阶段资料记录ID
     */
    @NotNull(message = "周期阶段资料记录ID不能为空")
    @ApiModelProperty("周期阶段资料记录ID")
    private String cycleStageDataId;

    /**
     * 是否清理汇报任务调度等 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否清理汇报任务调度等不能为空")
    @ApiModelProperty("是否清理汇报任务调度等")
    private String isClearReportTaskSchedulEtc;

    /**
     * 是否开启资金到账 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否开启资金到账不能为空")
    @ApiModelProperty("是否开启资金到账")
    private String isOpenFundsArrival;

    /**
     * 预算账户ID
     */
    @ApiModelProperty("预算账户ID")
    private String budgetAccountId;

    /**
     * 实体账户ID
     */
    @ApiModelProperty("实体账户ID")
    private String entityAccountId;

    /**
     * 资金单位
     */
    @NotNull(message = "资金单位不能为空")
    @ApiModelProperty("资金单位")
    private String fundUnit;

    /**
     * 是否到账账户 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否到账账户")
    private String isIncomingAccount;

    /**
     * 账单金额
     */
    @ApiModelProperty("账单金额")
    private Double billAmount;

    /**
     * 流水业务故事信息
     */
    @ApiModelProperty("流水业务故事信息")
    private String billBizStory;

    /**
     * 资金使用科目ID
     */
    @ApiModelProperty("资金使用科目ID")
    private String fundUsageSubjectld;

    /**
     * 预算费用支出科目ID
     */
    @ApiModelProperty("预算费用支出科目ID")
    private String budgetExpenseSubjectld;

    /**
     * 预算费用到账科目ID
     */
    @ApiModelProperty("预算费用到账科目ID")
    private String budgetExpensesReceivedSubjectld;

    /**
     * 关联扣减预算账户归属主体标识
     */
    @ApiModelProperty("关联扣减预算账户归属主体标识")
    private String relSubBudgetAccountCode;

    /**
     * 对方名称
     */
    @ApiModelProperty("对方名称")
    private String oppositeName;

    /**
     * 对方logo
     */
    @ApiModelProperty("对方logo")
    private String oppositeLogo;

    /**
     * 是否开启中期 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否开启中期不能为空")
    @ApiModelProperty("是否开启中期")
    private String openMidCycle;

    /**
     * 上一更新周期ID
     */
    @ApiModelProperty("上一更新周期ID")
    private String preUpdateCycleId;

    /**
     * 归属周期ID
     */
    @NotNull(message = "归属周期ID不能为空")
    @ApiModelProperty("归属周期ID")
    private String cycleId;

    /**
     * 周期类型标识
     */
    @NotNull(message = "周期类型标识不能为空")
    @ApiModelProperty("周期类型标识")
    private String cycleTypeCode;

    /**
     * 周期开始时间
     */
    @NotNull(message = "周期开始时间不能为空")
    @ApiModelProperty("周期开始时间")
    private Date cycleStartTime;

    /**
     * 周期结束时间
     */
    @NotNull(message = "周期结束时间不能为空")
    @ApiModelProperty("周期结束时间")
    private Date cycleEndTime;

    /**
     * 是否末级周期 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否末级周期不能为空")
    @ApiModelProperty("是否末级周期")
    private String isLastCycle;

    /**
     * 被评对象目标周期ID
     */
    @NotNull(message = "被评对象目标周期ID不能为空")
    @ApiModelProperty("被评对象目标周期ID")
    private String evaObjTargetCycleId;

    /**
     * 关联目标内容ID
     */
    @NotNull(message = "关联目标内容ID不能为空")
    @ApiModelProperty("关联目标内容ID")
    private String targetCycleContentId;

    /**
     * 目标得分单位
     */
    @NotNull(message = "目标得分单位不能为空")
    @ApiModelProperty("目标得分单位")
    private String targetScoreUnit;

    /**
     * 是否开启标志性成果 TRUE:是 FALSE:否 ONLY_UPLOAD:只上传标志性成果
     */
    @NotNull(message = "是否开启标志性成果不能为空")
    @ApiModelProperty("是否开启标志性成果")
    private String isOpenSymbolicAchievements;

    /**
     * 周期模式类型编码 FATHER_SON_CYCLE:父子周期 SINGLE_CYCLE:单周期 IRREGULAR_CYCLE:不规则周期
     */
    @NotNull(message = "周期模式类型编码不能为空")
    @ApiModelProperty("周期模式类型编码")
    private String periodicModeTypeCode;

    /**
     * 冗余目标ID
     */
    @NotNull(message = "冗余目标ID不能为空")
    @ApiModelProperty("冗余目标ID")
    private String targetId;

    /**
     * 冗余评价模板ID
     */
    @NotNull(message = "冗余评价模板ID不能为空")
    @ApiModelProperty("冗余评价模板ID")
    private String evaluationTemplateId;

    /**
     * 操作人就职记录ID
     */
    @NotNull(message = "操作人就职记录ID不能为空")
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;

    /**
     * 是否开启自定义执行周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开启自定义执行周期")
    private String isOpenCustomExecuteCycle;

}
